平時在開發程式時,數據
序列化
和反序列化
是非常重要的過程。應用程式能夠將內存中的數據轉換為可存儲
或傳輸
的格式,例如JSON
以及將來自外部源
的數據轉換為應用程序能夠理解的內存結構
。Golang 處理JSON
數據非常容易。今天將介紹如何在Golang中處理JSON
數據的序列化
和反序列化
過程。
JSON
又叫作 JavaScript Object Notation
是一種數據交換格式,使用易於理解的文本表示數據結構。JSON是通用的,並且用於數據存儲、配置文件、API通信等多個領域。JSON數據由鍵值對組成,其中鍵是字符串,值可以是數字、字符串、布林值、對象、數組或null。在Golang中,我們可以使用標準庫中的工具來處理JSON數據。
JSON序列化是將內存
中的數據結構轉換為JSON
格式的過程。可以使用encoding/json 。
這邊定義一個 Person
結構體,然後使用 json.Marshal
函數將結構體序列化為JSON
數據。
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
person := Person{Name: "Alice", Age: 30}
jsonData, err := json.Marshal(person)
if err != nil {
fmt.Println("JSON序列化失敗:", err)
return
}
fmt.Println(string(jsonData))
}
JSON反序列化是將JSON數據
轉換為Golang數據結構
的過程。同樣可以使用 encoding/json
實現這過程。
使用 json.Unmarshal
函數將JSON數據反序列化為Person結構體。
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonData := []byte(`{"name":"Bob","age":25}`)
var person Person
err := json.Unmarshal(jsonData, &person)
if err != nil {
fmt.Println("JSON反序列化失敗:", err)
return
}
fmt.Println("名字:", person.Name)
fmt.Println("年齡:", person.Age)
}
JSON是一個常見的數據交換格式。使用encoding/json 套件,可以輕鬆將Golang數據結構轉換為JSON,以及將JSON轉換為Golang數據結構。